package juego.control;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import juego.enemigo.Enemigo;
import juego.entidades.Entidad;
import juego.municiones.Municiones;
import juego.powerups.Moneda;
import juego.powerups.PowerUp;

public class Chico extends Caracteristica {
protected boolean FlorActivada=false;

	public Chico(Personaje mario, int x, int y, JLabel nivel, int up){
		
		this.mario=mario;
		this.x=x;
		this.y=y;
		this.nivel=nivel;
		this.up=up;
		
		
		
	}
	
	public void activarFlor(){FlorActivada=true;}
	public boolean tengoFlor(){return FlorActivada;}
	public void dispara(){
	if (FlorActivada){
	Entidad entity=	mario.getLevel().getEntidad(x-1, y+1);
	Municiones m=new Municiones();
	entity.addDisparo(m);
	entity.getCarga().get(0).crearYstartLanzamiento(mario, x-1, y+1, nivel);
	FlorActivada=false;
	}
	}
	

	
	public boolean soy(){return true;}
	
	public boolean puedoIrDerecha(){


		if (mario.getLevel().getEntidad(x-1, y+1)!=null){
		
		if (mario.getLevel().getEntidad(x-1, y+1).esTransitable()){
		
			return true;
		}
			
		}
		return false;
	}
	
	
	public boolean puedoIrIzquierda(){

		if (y<=17) {return false;}
		if (mario.getLevel().getEntidad(x-1, y-1)!=null){
			
		return mario.getLevel().getEntidad(x-1, y-1).esTransitable();
		}
		return false;
	}
	
	
	public void derecha() {
		
		mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/lindos/mariochiquito_derecha.gif")));
		nivel.repaint();
		mario.setLocation(mario.getLocation().x+32 ,mario.getLocation().y);
	
		if (mario.getLevel().getEntidad(x-1, y+1).tienePremios()){
			PowerUp p= mario.getLevel().getEntidad(x-1, y+1).getPrimerPremio();
			p.colisionarPowerUp(mario, x-1, y+1,nivel);
		}
		else 
			if (!mario.getLevel().getEntidad(x-1, y+1).getMalos().isEmpty()){ 
				Enemigo m= mario.getLevel().getEntidad(x-1, y+1).getPrimerMalo();
			    m.colisionarEnemigo(mario, x-1, y+1, nivel);
				
			    }
		y++;
		
		

		nivel.setLocation(nivel.getLocation().x - 32,nivel.getLocation().y);
		}


	
	public void izquierda() {
		mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/lindos/mariochiquito_izquierda.gif")));
		nivel.repaint();
		mario.setLocation(mario.getLocation().x-32 ,mario.getLocation().y);
		if (mario.getLevel().getEntidad(x-1, y-1).tienePremios()  && (mario.getLevel().getEntidad(x-1, y+1).nombreEntidad().equals("vacio"))){
		
			PowerUp p=mario.getLevel().getEntidad(x-1, y-1).getPrimerPremio();
			p.colisionarPowerUp(mario, x-1, y-1,nivel);
			
			
		}
		
		else if (!mario.getLevel().getEntidad(x-1, y-1).getMalos().isEmpty()){ 
			Enemigo m= mario.getLevel().getEntidad(x-1, y-1).getPrimerMalo();
		    m.colisionarEnemigo(mario, x-1, y-1, nivel);
			
		    }
		y --;
		nivel.setLocation(nivel.getLocation().x + 32,nivel.getLocation().y);

		
	}

	
	public void quieto() {
		mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/lindos/QUIETO.gif")));
		
	}

	
	public void agachado() {
		mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/lindos/chiquito_muere.gif")));
		
	}

	public void saltar() {
		mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/lindos/mario-jump-right.gif")));
		if (mario.getLevel().getEntidad(x-2,y)!=null){
		if(mario.getLevel().getEntidad(x-2,y).esTransitable()){
			
			mario.setLocation(mario.getLocation().x ,mario.getLocation().y-32);
			up+=32;
			x--;
			mario.nada(x, y);
			
		}
		else{
			mario.getLevel().getEntidad(x-2,y).colisionarEntidadDown(mario,nivel,x-2,y);
			}
		}
	}

	


	public void saltarDerecha(){
		int oldy=y;
		mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/lindos/mario-jump-right.gif")));
		if (mario.getLevel().getEntidad(x-1,y).esTransitable()){
			up+=32;
			x-=1;
			mario.setLocation(mario.getLocation().x,mario.getLocation().y-32);
			if (mario.getLevel().getEntidad(x,y+1).esTransitable()){
				y+=1;
				mario.setLocation(mario.getLocation().x+32,mario.getLocation().y);
		
				if (mario.getLevel().getEntidad(x-1,y).esTransitable()){
					x-=1;
					up+=32;
					mario.setLocation(mario.getLocation().x,mario.getLocation().y-32);
					
					if (mario.getLevel().getEntidad(x,y+1).esTransitable()){
						y+=1;
						
						mario.setLocation(mario.getLocation().x+32,mario.getLocation().y);
						
						if (!mario.getLevel().getEntidad(x+1,y).esTransitable()){  
						  mario.nada(x,y);
							 
						}
						else {
							mario.caer();
							mario.nada(x+1, y);
					  }
				  
						
				 
				  }
			  
					mario.caer(); 
					mario.nada(x, y+1);
			  }
				mario.caer(); 
				mario.nada(x-1, y);
			
				}
			mario.caer(); 
			mario.nada(x, y+1);
							
		}
		
		nivel.setLocation(nivel.getLocation().x - ((y - oldy)*32),nivel.getLocation().y);
		
	}
	
	public void saltarIzquierda(){
		
		int oldy=y;
		 if (y>18 ){
			 mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/lindos/mario-jump-left.gif")));
				if (mario.getLevel().getEntidad(x-1,y).esTransitable()){
					up+=32;
					x-=1;
					mario.setLocation(mario.getLocation().x,mario.getLocation().y-32);
					if (mario.getLevel().getEntidad(x,y-1).esTransitable()){
						y-=1;
						
						mario.setLocation(mario.getLocation().x-32,mario.getLocation().y);
						
						if (mario.getLevel().getEntidad(x-1,y).esTransitable()){
							x-=1;
							up+=32;
							mario.setLocation(mario.getLocation().x,mario.getLocation().y-32);
							if (mario.getLevel().getEntidad(x,y-1).esTransitable()){
								y-=1;
								
								mario.setLocation(mario.getLocation().x-32,mario.getLocation().y);
								
								if (!mario.getLevel().getEntidad(x+1,y).esTransitable()){  
									mario.nada(x,y);
										
									}
									else {
										
											mario.caer();
											mario.nada(x+1,y);
								
											}
							
								
								}
								mario.caer();
								mario.nada(x,y-1);
			
		  				
							}
							mario.caer();
							mario.nada(x-1, y);

					}
						mario.caer();
						mario.nada(x,y-1);
		 	
			}
		
		 }
		nivel.setLocation(nivel.getLocation().x + (oldy - y)*32,nivel.getLocation().y);
		}


	public void caer()
	{
		if(mario.getLevel().getEntidad(x,y)!=null){
			while (up>=0 && mario.getLevel().getEntidad(x,y).esTransitable()){
				mario.setLocation(mario.getLocation().x ,mario.getLocation().y+32);
				up-=32;
				if (mario.getLevel().getEntidad(x,y).esTransitable()) {
					x++;
					}
				}
				if (x>=14 ){ 
					mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/lindos/chiquito_muere.gif")));
				    mario.setLocation(mario.getLocation().x ,mario.getLocation().y+32);
					mario.setLocation(mario.getLocation().x ,mario.getLocation().y+32);
					mario.setLocation(mario.getLocation().x ,mario.getLocation().y+32);
				
					mario.setVidas(0);
					mario.getVentanaPrincipal().actualizarVidas();
					mario.dibujarVidas();						 
				}
			}
		}

	
	
	


	public void nada(int x, int y)
	{
		if (mario.getLevel().getEntidad(x, y)!=null){
		if (mario.getLevel().getEntidad(x, y).tienePremios() ){
			PowerUp p=mario.getLevel().getEntidad(x, y).getPrimerPremio();
			p.colisionarPowerUp(mario, x, y,nivel);
		}
		else{
		if (mario.getLevel().getEntidad(x, y).hayMalos()){
			Enemigo m=mario.getLevel().getEntidad(x, y).getPrimerMalo();
			m.colisionarEnemigoDeArriba(mario, x, y,nivel);
		}
		}
		
	}
		}

}
